using System.Collections;
using System.Collections.Generic;
using UnityEngine;

namespace LS.GameSystem
{
    public interface IGameSystem
    {
        /// <summary>
        /// 优先级
        /// </summary>
        int Priority { get; }

        //bool UseUpdate { get; }

        /// <summary>
        /// 初始化
        /// </summary>
        void Init();

        /// <summary>
        /// 轮询
        /// </summary>
        /// <param name="deltaSeconds"></param>
        /// <param name="realSeconds"></param>
        void Update(float deltaSeconds, float realSeconds);

        /// <summary>
        /// 固定间隔轮询
        /// </summary>
        /// <param name="fixedDelta"></param>
        /// <param name="realFixedDelta"></param>
        void FixedUpdate(float fixedDelta, float realFixedDelta);
        
        /// <summary>
        /// 按秒轮询
        /// </summary>
        /// <param name="seconds"></param>
        void UpdateSeconds(int seconds);

        /// <summary>
        /// 按照真实秒数轮询
        /// </summary>
        /// <param name="realSeconds"></param>
        void UpdateRealSeconds(int realSeconds);

        /// <summary>
        /// 关闭时
        /// </summary>
        void Shutdown();
    }
}
